const MyPromise = require('./MyPromise')

// 创建promise对象，需要传入一个执行器，会立即执行
// let promise = new MyPromise((resolve,reject) => {
//   // resolve(100)
//   reject(100)
// })

// function p1() {
//   return new MyPromise(resolve => {
//     setTimeout(() => {
//       resolve("p1")
//     }, 2000);
//   })
// }
function p2() {
  return new MyPromise((resolve,reject) => {
    resolve("p2")
    // reject("p2")
  })
}
 
p2().then(res => { 
  console.log(res);
}).catch(err => { 
  console.log(err);
})

// p2().finally(() => {
//   console.log("finally");
//   return p1()
// }).then(res => {
//   console.log(res);
// }, err => {
//   console.log(err);
// })

// function p1() { 
//   return new MyPromise(resolve => { 
//     setTimeout(() => {
//       resolve("p1")
//     }, 2000);
//   }) 
// } 
// function p2() { 
//   return new MyPromise(resolve => { 
//       resolve("p2")
//   })
// }
  
// MyPromise.all(["a", "b", p1(), p2(), "c"]).then(res => { 
//   console.log(res);
// })

// promise.then().then().then(res => { 
//   console.log(1,res);
// }, err => { 
//   console.log(2,err);
// })

// p1.then(res => {
//   console.log(res);
// }, reason => { 
//   console.log(reason.message);
// })
 
// let other = () => new MyPromise(resolve => { 
//   resolve("other")
// })
// // then方法可以链式调用，某个then方法中的返回值会作为下一个then方法的参数
// p.then(value => {
//   console.log(value);
//   return other()
// }).then(res => {
//   console.log(res);
// })

// let p1 = new MyPromise((resolve, reject) => {
//   resolve(3)
// })
// MyPromise.resolve(p1).then(res => {
//   console.log(res);
// })
// MyPromise.resolve(1).then(res => {
//   console.log(res);
// })

// p.then(value => {
//   console.log(2);
//   console.log(value);
// }, reason => {
//   console.log(reason);
// })

// p.then(value => {
//   console.log(3);
//   console.log(value);
// }, reason => {
//   console.log(reason);
// }) 
